
dojo.provide("dojo.widget.TreeTimeoutIterator");dojo.require("dojo.event.*");dojo.require("dojo.json");dojo.require("dojo.io.*");dojo.require("dojo.widget.TreeCommon");dojo.declare("dojo.widget.TreeTimeoutIterator",null,function(elem,callFunc,callObj){var _this=this;this.currentParent=elem;this.callFunc=callFunc;this.callObj=callObj?callObj:this;this.stack=[];},{maxStackDepth:Number.POSITIVE_INFINITY,stack:null,currentParent:null,currentIndex:0,filterFunc:function(){return true;},finishFunc:function(){return true;},setFilter:function(func,obj){this.filterFunc=func;this.filterObj=obj;},setMaxLevel:function(level){this.maxStackDepth=level-2;},forward:function(timeout){var _this=this;if(this.timeout){var tid=setTimeout(function(){_this.processNext();clearTimeout(tid);},_this.timeout);}else{return this.processNext();}},start:function(processFirst){if(processFirst){return this.callFunc.call(this.callObj,this.currentParent,this);}
return this.processNext();},processNext:function(){var handler;var _this=this;var found;var next;if(this.maxStackDepth==-2){return;}
while(true){var children=this.currentParent.children;if(children&&children.length){do{next=children[this.currentIndex];}while(this.currentIndex++<children.length&&!(found=this.filterFunc.call(this.filterObj,next)));if(found){if(next.isFolder&&this.stack.length<=this.maxStackDepth){this.moveParent(next,0);}
return this.callFunc.call(this.callObj,next,this);}}
if(this.stack.length){this.popParent();continue;}
break;}
return this.finishFunc.call(this.finishObj);},setFinish:function(func,obj){this.finishFunc=func;this.finishObj=obj;},popParent:function(){var p=this.stack.pop();this.currentParent=p[0];this.currentIndex=p[1];},moveParent:function(nextParent,nextIndex){this.stack.push([this.currentParent,this.currentIndex]);this.currentParent=nextParent;this.currentIndex=nextIndex;}});